package com.alibaba.model.param;

import jakarta.validation.constraints.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;

/**
 * 商品参数类（用于前端请求或接口传参）
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProductParam {

    /** 商品ID，更新或删除操作必须传，必须大于0 */
    @NotNull(message = "商品ID不能为空")
    @Positive(message = "商品ID必须大于0")
    private Long id;

    /** 商品名称，不能为空，长度1~100 */
    @NotBlank(message = "商品名称不能为空")
    @Size(max = 100, message = "商品名称长度不能超过100")
    private String name;

    /** 商品价格，不能为空，必须 >= 0 */
    @NotNull(message = "商品价格不能为空")
    @DecimalMin(value = "0.0", inclusive = true, message = "商品价格不能小于0")
    private BigDecimal price;

    /** 商品库存，不能为空，必须 >= 0 */
    @NotNull(message = "商品库存不能为空")
    @Min(value = 0, message = "商品库存不能小于0")
    private Integer stock;

    /** 商品浏览量，可为空，必须 >=0 */
    @Min(value = 0, message = "浏览量不能小于0")
    private Long viewCount;

    /** 商品状态（0-下架，1-上架），不能为空 */
    @NotNull(message = "商品状态不能为空")
    @Min(value = 0, message = "商品状态必须为0或1")
    @Max(value = 1, message = "商品状态必须为0或1")
    private Byte status;
}
